/**
 * \file ThreadLauncher.h
 * \brief ThreadLauncher definition class
 * \author Edouard ROGE
 * \date 31 august 2012
 */

#ifndef _THREADLAUNCHER_WIN32_
#define _THREADLAUNCHER_WIN32_

#include "Core/Memory/HeapObject.h"

namespace Core
{
	namespace Thread
	{
		class Thread;
		/**
		 * \class ThreadLauncher
		 * \brief Launch task and wait for it to finish
		 */
		class ThreadLauncher : public Memory::HeapObject
		{
		public:

			/**
			 * \fn ThreadLauncher();
			 * \brief Constructor
			 */
			ThreadLauncher();

			/**
			 * \fn virtual ~ThreadLauncher();
			 * \brief Destructor
			 */
			virtual ~ThreadLauncher();

			/**
			 * \fn virtual void WaitFor(Thread * _pThread);
			 * \param _pThread task to wait for
			 * \brief wait for a task to finish
			 */
			virtual void WaitFor(Thread * _pThread);

		};
	}
}

#endif /* _THREADLAUNCHER_WIN32_ */
